/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package educar.abmDedicacion;

import educar.models.Cargos;
import educar.models.Dedicacion;
import educar.models.Docente;
import educar.models.Facultad;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JOptionPane;

/**
 * <hr>
 * Clase AgregarDedicacionController: En esta clase se encuentran los metodos  
 * necesarios para agregar una dedicacion tanto a la base de datos como a la tabla.
 * <hr>
 * @author Flubber
 */
public class AgregarDedicacionController implements ActionListener {
       
    //Atributo usado para crear una ventana    
    private AgregarDedicacionView agregarDedicacionView;
    
    //Arreglo usado para almacenar los datos de la dedicacion    
    private String vector[] = new String[4];
    
    //Atributo usado para almacenar una instancia de DedicacionController      
    private DedicacionController dedicacionControl;
    
// <editor-fold defaultstate="collapsed" desc="Constructor">
    /**
     * <hr>
     * AgregarDedicacionController(): Constructor de la clase AgregarDedicacionController
     * <hr>
     * @param dedicacionController 
     */       
    public AgregarDedicacionController(DedicacionController dedicacionControler){        
        dedicacionControl = dedicacionControler;
        agregarDedicacionView = new AgregarDedicacionView();
        agregarDedicacionView.setActionListener(this);
    }
 // </editor-fold>

// <editor-fold defaultstate="collapsed" desc="Action setView">    
    /**
     * <hr>
     * setView(): Este metodo hace visible a una ventana.
     * <hr>
     */    
    public void setView() {
        agregarDedicacionView.setVisible(true);
    }
// </editor-fold>  

// <editor-fold defaultstate="collapsed" desc="Metodos ActionPermormed">    
    /**
     * <hr>
     * actionPerformed(): Este metodo recibe el evento de un boton.
     * Boton CANCELAR cierra la ventana.
     * Boton ACEPTAR agrega la dedicacion a la base de datos y a la tabla.
     * <hr>
     */      
    @Override
    public void actionPerformed(ActionEvent e) {
        //Evalua la procedencia del evento del boton           
        Object source = e.getSource();
        if (agregarDedicacionView.getJbCancelar() == source){ //Boton Cancelar
            agregarDedicacionView.dispose();
        }
        if (agregarDedicacionView.getJbAceptar() == source){  //Boton Aceptar
            vector[0] = agregarDedicacionView.getDNIDocente();
            vector[1] = agregarDedicacionView.getCodFacultad();
            vector[2] = agregarDedicacionView.getCodCargo(); 
            vector[3] = agregarDedicacionView.getDedicacion();
            if (!((vector[0].length() == 0) || (vector[1].length() == 0) || (vector[2].length() == 0))) {
                if ((Docente.exist(vector[0])) && (Facultad.exist(vector[1])) && (Cargos.exist(vector[2]))) {
                    Dedicacion dedicacion = new Dedicacion(vector);
                    if (dedicacion.save()) {                           
                        dedicacionControl.agregarATabla(vector);
                        agregarDedicacionView.dispose();
                    } else {    //El usuario ya existe
                        JOptionPane.showMessageDialog(null,"Ya existe un registro con el codigoDeCargo "+ vector[0]+" , el dni del docente"+ vector[1]+" y el cargo"+ vector[2]+".","proyecto 2012",JOptionPane.WARNING_MESSAGE);
                    }
                } else{
                    JOptionPane.showMessageDialog(null,"Alguno de los campos no existe","proyecto 2012",JOptionPane.WARNING_MESSAGE);
                }
            } else {    //No se ingresaron todos los datos de el usuario
                JOptionPane.showMessageDialog(null,"Existe al menos un campo sin completar.\n\nRevise los campos ingresados","proyecto 2012",JOptionPane.WARNING_MESSAGE);
            }
        }
    } //Fin del metodo actionPerformed().    
// </editor-fold>

}//Fin de la clase AgregarDedicacionController
